#include "Heap.h"
#include "math.h"
#include <iostream>

//template <typename T>
//void Heap<T>::push(T d) {
//	assert(elements < size);
//	data[elements++] = d;
//	unsigned idx = elements-1;
//	while (idx != 0) 
//	{
//		unsigned pidx = parent_index(idx);
//		if (data[pidx] < d)
//			std::swap(data[idx], data[pidx]);
//		else break;
//			idx = pidx;
//	}
//}
//
//template <typename T>
//void Heap<T>::pop() {
//	assert(elements > 0);
//	data[0] = data[--elements];
//	unsigned idx = 0;
//	do 
//	{
//		unsigned childs = children(idx);
//		if (childs == 0) break;
//		unsigned max_idx = left_index(idx);
//		if (childs == 2) 
//		{
//			if (data[max_idx] < data[max_idx + 1])
//				max_idx++;
//		}
//		if (data[idx] < data[max_idx]) 
//		{
//			std::swap(data[idx], data[max_idx]);
//			idx = max_idx;
//		}
//		else break;
//	} while (true);
//}
//
//template <typename T>
//void Heap<T>::print() const
//{
//	int row = 0;
//	int i=0;
//	while(i<elements)
//	{
//		int elementsInRow = pow(2, row);
//		for(int l=0; l<elemntsInRow; l++)
//		{
//			cout << data[i] << ", ";
//			i++;
//		}
//		cout << '\n';
//		row++;
//	}
//}